home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / games / otoko / source.lzh / enemy.h < prev    next >
C/C++ Source or Header  |  1999-06-14  |  6KB  |  211 lines

  1. /* enemy.h */
  2.  
  3. #ifndef SHORT_LX
  4. /* signed int の座標値から固定小数部(上位16bit)を取り出すマクロ */
  5. #define SHORT_LX (*((short *) (&p->lx)))
  6. #define SHORT_LY (*((short *) (&p->ly)))
  7. #define SHORT_VX (*((short *) (&p->vx)))
  8. #define SHORT_VY (*((short *) (&p->vy)))
  9. #endif
  10.  
  11. #define ZAKO_SCORE_DISP    16    /* ザコキャラの得点を表示する回数 */
  12.  
  13. /* 敵キャラ点滅(ダメージを受けた、体力が少ない)時のタイマー用定数 */
  14. #define TIMER_FLASH_RED        10    /* タイマーがこれ以上なら赤フラッシュ */
  15. #define TIMER_FLASH_DAMAGE    14    /* ダメージを受けたらタイマーをこの値に */
  16. #define TIMER_FLASH_NORMAL    15    /* これを越えたらタイマーを0に */
  17.  
  18.  
  19. typedef struct _enemy {
  20.     signed short x, y;    /* 座標 */
  21.     short pt;        /* スプライトパターンNo. */
  22.     short info;        /* 反転コード・色・優先度を表わすデータ */
  23.     short type;        /* 種類 */
  24.     short arg;        /* 予備の引き数 */
  25.     signed int lx, ly;    /* 32bit X,Y 座標 ( l = longword ) */
  26.     signed int vx, vy;    /* 速度 */
  27.     signed short hit_px, hit_py;    /* 対プレイヤー当たり判定 */
  28.     signed short hit_sx, hit_sy;    /* 対ショット当たり判定(全体) */
  29.     signed short hit_cx;    /* 対ショット当たり判定(コア) */
  30.     signed short hp;    /* 耐久力(<=0 で破壊) */
  31.     unsigned short timer;    /* 時間切れ用タイマー */
  32.     short damage;        /* 今回受けたダメージ(自機ショットに当たっていなければ = 0) */
  33.     char damage_core;    /* 今回コアにダメージを受けたら != 0 */
  34.     char flash;        /* 残り hp が少なくてフラッシュするカウンター */
  35.     unsigned char angle;    /* 角度 (0~255) */
  36.     short (*func_enemy_move) (struct _enemy *);    /* 移動関数へのポインタ */
  37.     void (*func_enemy_tini) (struct _enemy *);    /* 終了関数へのポインタ */
  38.     struct _enemy *next;    /* 次の構造体へのポインタ */
  39.  
  40.  
  41.     short work;        /* ワーク */
  42.     short work2;
  43.     short work3;
  44.     short work4;
  45.     char cwork;        /* ワーク(char) */
  46.     char cwork2;
  47.     char cwork3;
  48.     char cwork4;
  49.     char cwork5;
  50.     char seq;        /* 現在の状態 */
  51.     short m_work;        /* 移動用ワーク */
  52.     short m_work2;
  53.     short m_work3;
  54.     short m_work4;
  55.     short s_work;        /* ショット用ワーク */
  56.     short s_work2;
  57.     short s_work3;
  58.     short s_work4;
  59.     unsigned char s_angle;    /* ショットの角度 (0~255) */
  60.     unsigned char s_angle2;
  61.     unsigned char s_angle3;
  62.     unsigned char s_angle4;
  63.  
  64.  
  65.     /* 移動用ワーク(SubMoveTo() 用) */
  66.     signed int move_ax, move_ay;    /* 加速度 */
  67.     unsigned short move_seq;/* 加速中、等速度運動中、減速中 */
  68.     signed short move_count;/* 加速度を何回足すか */
  69.     signed short move_count2;    /* 一定速度で進む回数 */
  70.     signed short move_count3;    /* 実際に加速した回数 */
  71.     signed short move_counter;    /* 何回足すか数える */
  72.  
  73.  
  74.     /* コア関係のワーク */
  75.     signed short core_x, core_y;    /* コア座標 */
  76.     short core_pt;        /* スプライトパターンNo. */
  77.     short core_info;    /* 反転コード・色・優先度を表わすデータ */
  78.  
  79.  
  80.     /* パーツ関係のワーク */
  81.     struct _enemy *parts1;    /* パーツへのポインタ */
  82.     struct _enemy *parts2;
  83.     struct _enemy *parts3;
  84.     struct _enemy *parts4;
  85.     short parts1_work;    /* ワーク */
  86.     short parts1_work2;
  87.     short parts2_work;
  88.     short parts2_work2;
  89.     short parts3_work;
  90.     short parts3_work2;
  91.  
  92.     /* キャラクター間通信用ワーク */
  93.     struct _enemy *parent;    /* 親のワーク */
  94.     unsigned char child_kill;    /* 親が子を殺す時(親が設定) */
  95.     unsigned char child_death;    /* 子が死んだことを親に知らせる(子が設定) */
  96. } ENEMY;
  97.  
  98.  
  99. /* 関数プロトタイプ宣言 */
  100. void EnemyInit0 (void);
  101. void EnemyInitStatic (void);
  102. ENEMY *EnemyInit (short, signed short, signed short, short, struct _enemy *);
  103. void EnemyMove (void);
  104. void EnemyTini (void);
  105.  
  106. /* サービスルーチン */
  107. void SubEnemyMoveToInit (ENEMY *, signed short, signed short,
  108.              unsigned char, signed short);
  109. short SubEnemyMoveTo (ENEMY *);
  110. short SubEnemyMoveToAbort (ENEMY *);
  111.  
  112.  
  113. /* FuncEnemy/ 以下の敵移動ルーチン */
  114. void EnemyInitBoss02 (ENEMY *);
  115. void EnemyInitBoss03 (ENEMY *);
  116. void EnemyInitCoverF (ENEMY *);
  117. void EnemyInitCoverN (ENEMY *);
  118. void EnemyInitCoverN2 (ENEMY *);
  119.  
  120. void EnemyInitLBoss01 (ENEMY *);
  121. void EnemyInitLBoss01C (ENEMY *);
  122.  
  123. void EnemyInitLBoss02 (ENEMY *);
  124. void EnemyInitLBoss02E (ENEMY *);
  125. void EnemyInitLBoss02H (ENEMY *);
  126. void EnemyInitLBoss02W (ENEMY *);
  127.  
  128. void EnemyInitLBoss03 (ENEMY *);
  129. void EnemyInitStaticLBoss03G (void);
  130. void EnemyInitLBoss03G (ENEMY *);
  131. void EnemyInitLBoss03P (ENEMY *);
  132. void EnemyInitLBoss03U (ENEMY *);
  133. void EnemyInitLBoss03Z (ENEMY *);
  134.  
  135. void EnemyInitLBoss04 (ENEMY *);
  136. void EnemyInitLBoss04C (ENEMY *);
  137. void EnemyInitLBoss04E (ENEMY *);
  138. void EnemyInitLBoss04S (ENEMY *);
  139. void EnemyInitLBoss04V (ENEMY *);
  140. void EnemyInitLBoss04W (ENEMY *);
  141.  
  142. void EnemyInitMvLaser (ENEMY *);
  143. void EnemyInitMvLaserH (ENEMY *);
  144. void EnemyInitOpLaser (ENEMY *);
  145. void EnemyInitOpLinear (ENEMY *);
  146. void EnemyInitRound4 (ENEMY *);
  147.  
  148. void EnemyInitStaticSearchZ (void);
  149. void EnemyInitSearchZ (ENEMY *);
  150.  
  151. void EnemyInitSword (ENEMY *);
  152. void EnemyInitSword2 (ENEMY *);
  153.  
  154. void EnemyInitStaticZako02 (void);
  155. void EnemyInitZako02 (ENEMY *);
  156.  
  157. void EnemyInitStaticZako031 (void);
  158. void EnemyInitZako031 (ENEMY *);
  159.  
  160. void EnemyInitStaticZako032 (void);
  161. void EnemyInitZako032 (ENEMY *);
  162.  
  163. void EnemyInitStaticZako033 (void);
  164. void EnemyInitZako033 (ENEMY *);
  165.  
  166. void EnemyInitStaticZako04 (void);
  167. void EnemyInitZako04 (ENEMY *);
  168.  
  169. void EnemyInitStaticZako041 (void);
  170. void EnemyInitZako041 (ENEMY *);
  171.  
  172.  
  173. enum {
  174.     ENEMY_BOSS02 = 0,
  175.     ENEMY_BOSS03,
  176.     ENEMY_COVERF,
  177.     ENEMY_COVERN,
  178.     ENEMY_COVERN2,
  179.     ENEMY_LBOSS01,
  180.     ENEMY_LBOSS01C,
  181.     ENEMY_LBOSS02,
  182.     ENEMY_LBOSS02E,
  183.     ENEMY_LBOSS02H,
  184.     ENEMY_LBOSS02W,
  185.     ENEMY_LBOSS03,
  186.     ENEMY_LBOSS03G,
  187.     ENEMY_LBOSS03P,
  188.     ENEMY_LBOSS03U,
  189.     ENEMY_LBOSS03Z,
  190.     ENEMY_LBOSS04,
  191.     ENEMY_LBOSS04C,
  192.     ENEMY_LBOSS04E,
  193.     ENEMY_LBOSS04S,
  194.     ENEMY_LBOSS04V,
  195.     ENEMY_LBOSS04W,
  196.     ENEMY_MVLASER,
  197.     ENEMY_MVLASERH,
  198.     ENEMY_OPLASER,
  199.     ENEMY_OPLINEAR,
  200.     ENEMY_ROUND4,
  201.     ENEMY_SEARCHZ,
  202.     ENEMY_SWORD,
  203.     ENEMY_SWORD2,
  204.     ENEMY_ZAKO02,
  205.     ENEMY_ZAKO031,
  206.     ENEMY_ZAKO032,
  207.     ENEMY_ZAKO033,
  208.     ENEMY_ZAKO04,
  209.     ENEMY_ZAKO041,
  210. };
  211.